package com.base.myproject.client.tools;

import java.util.HashMap;

import com.base.myproject.client.Connector.ConnectorObjectContainer;
import com.base.myproject.client.busi.AddItem;
import com.base.myproject.client.busi.BO.ModelDataList;
import com.base.myproject.client.busi.ClientEnv.SyncObjectContainer;
import com.base.myproject.client.busi.service.Associator;
import com.base.myproject.client.busi.service.AssociatorX;
import com.base.myproject.client.busi.system.BcodeSync;
import com.base.myproject.client.busi.system.PrinterSync;
import com.base.myproject.client.jdbc.DataSet;
import com.base.myproject.client.jdbc.StoreInfo;
import com.base.myproject.client.ui.codenamemap.CodeNameMap;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * The async counterpart of <code>GreetingService</code>.
 */
public interface GreetingServiceAsync {
//	void greetServer(String input, AsyncCallback<String> callback);
//	void greetServerarr(String input, AsyncCallback<String[][]> callback);
//	void greetServer(String[][] name,String type,AsyncCallback<String> callback);
//	void greetServerShoppingCart(java.util.LinkedList<ShopCartObject> ll,String ccode,AsyncCallback<String> callback);
//
//	void greetServerCcode(CcodeObject cco,AsyncCallback<String> callback);
//	/**
//	 * 读取bo
//	 * @param querysql
//	 * @param classname
//	 * @param callback
//	 */
	void  getBaseObject(String querysql,String classname,AsyncCallback callback);
//	/**
//	 * 支持各种bo的办法
//	 * @param bolinklist
//	 * @param method  save,update,delete
//	 */
//	
//	//void saveBaseObject(java.util.LinkedList< BaseObject> bolinklist,String method);
//	
//	void saveBaseObject(java.util.Vector<String> savevector,java.util.HashMap<String, String> params,AsyncCallback<String> callback);
//
//	
////	void getAssociator(String ccode,AsyncCallback<String> callback);

	void greetServer(java.lang.String name, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String> arg2);
	void greetServer(java.lang.String[][] name, java.lang.String type, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String> arg3);
	void greetServerCcode(com.base.myproject.client.busi.b2c.CcodeObject cco, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String> arg2);
	void greetServerShoppingCart(java.util.LinkedList<com.base.myproject.client.busi.b2c.shopping.ShopCartObject> ll, java.lang.String ccode, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String> arg3);
	void greetServerarr(java.lang.String name, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String[][]> arg2);
	void saveBaseObject(java.util.Vector<java.lang.String> savevector, java.util.HashMap<java.lang.String, java.lang.String> params, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String> arg3);
	 /**
	  * mode 1 为根据ccode查找
	  * 	 2 为根据name查找
	  * 	 3 为根据phone查找
	  * 	 4 为根据s_cardno查找
	  * 
	  */
	void getAssociator(String ccode,int mode,AsyncCallback<Associator> callback);
	
	 /**
	  * mode 1 为根据ccode查找
	  * 	 2 为根据name查找
	  * 	 3 为根据phone查找
	  * 	 4 为根据s_cardno查找
	  * 多账户的会员资料信息
	  */
	void getAssociatorx(String ccode,int mode,AsyncCallback<AssociatorX> callback);
	void getCodeNameMap(CodeNameMap cnm ,AsyncCallback<CodeNameMap> callback);
	
	void getbnamebyshortname(String	shortcode,AsyncCallback<java.lang.String> arg2);
	
	void getBcode(String column,String value,AsyncCallback<BcodeSync> callback);
	
	void getDataSet(String sql,AsyncCallback<DataSet> callback);
	
	void getPrinterHtml(PrinterSync printersync,AsyncCallback<String> callback);
	
	void  getConnectorObject(AsyncCallback<ConnectorObjectContainer> callback); 
	
	/**
	 * 单个syncobject提交，mode 1:添加，2：删除;3:修改保存;
	 * @param so
	 * @param callback
	 */
	void  getSyncObject(SyncObjectContainer so,int mode,AsyncCallback< String> callback); 
	/**
	 * 判断是否存在此用户，filter 是select * from bcode where 后的查询条件。
	 * @param filter
	 * @param callback
	 */
	void checkhasBcode(String filter,AsyncCallback<Boolean> callback);
	/**
	 * 根据会员卡号和密码检查用户是否存在。true存在，否则不存在
	 * @param ccode
	 * @param password
	 * @param callback
	 */
	void checkhasCcode_scardno(String scardno,String password,AsyncCallback<Boolean> callback);
	
	
	
	//××××××××××××××××××××××××××××××××××××××××××××××××××××××××
//	CommandSyncContainer list  = new CommandSyncContainer();
//	 CommandSyncsql commandsql = new CommandSyncsql();
//	 
//	// 保存
//	commandsql.getV().addAll(store._trySave(0));
//
//	GWT.log("update ccode set ccode =icode where s_cardno='"
//			+ cardno_t.getValue() + "' and cname='"
//			+ cname_t.getValue() + "'", null);
//	commandsql.getV().add(
//			"update ccode set ccode =icode where s_cardno='"
//					+ cardno_t.getValue() + "' and cname='"
//					+ cname_t.getValue() + "'");
//	
//	list.add(commandsql);
//
//	final com.base.myproject.client.tools.GreetingServiceAsync greetingService = GWT
//			.create(com.base.myproject.client.tools.GreetingService.class);
//	greetingService.SendCommandSync(list,
//			new AsyncCallback<CommandSyncReturnObject>() {
//				public void onFailure(Throwable caught) {
//					Window.alert("网络连接不稳定，请稍后重试！");
//				}
//
//				public void onSuccess(
//						CommandSyncReturnObject cyro) {
//
//					System.out.println("成功："
//							+ cyro.getMessage() + cyro.isB()
//							+ cyro.getRetrunstr());
//					if (cyro.isB()) {
//						Info.display("", "保存成功", "");
//						//close();
//					} else {
//						MessageBox.alert("错误", "保存错误！"
//								+ cyro.getMessage(), null);
//					}
//				}
//			});
	//××××××××××××××××××××××××××××××××××××××××××××××××××××××××
/**
 *  例子同上
 * 向服务器发送命令组，解决重复与服务器连接的问题。
 * 同时服务器端支持回滚。
 * 此做法合适提交给服务器的任务，返回成功或者失败，不合适用于取服务器的值等。
 * @param comlist
 * @param callback
 */
	void SendCommandSync(CommandSyncContainer comlist,AsyncCallback<CommandSyncReturnObject> callback);

	
	void SendCommandSyncSingle(CommandSyncContainer comlist,AsyncCallback<CommandSyncReturnObject> callback);

	/**
	 * 提高storeinfo ，返回ModelDataList，ModelDataList里的list可以被store通过add添加，组织成store
	 * TreeStore<TreeNodeModelData> store = new TreeStore<TreeNodeModelData>();  
			    store.add(ml.getModels(), true);  
	 * @param info
	 * @param mode
	 * @param callback
	 */
	void getModelDataList(StoreInfo info,int mode, AsyncCallback<ModelDataList> callback);

	void getComet(AsyncCallback<HashMap<String,String>> callback);

	/**
	 * 从服务器获取内码
	 * si里要放入tablename
	 * hm里放入同时插入的值
	 * @param hm
	 * @param callback
	 */
	void getIcode(StoreInfo si,String columnname,String columnvalue, AsyncCallback<String> callback);

	void getIcodex(StoreInfo si, String columnname, String columnvalue,
			  AsyncCallback<AddItem> callback);

	void UrlEncode(String str,String c, String enc, AsyncCallback<String> callback);

}
